home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 1
/
CU Amiga Magazine CD-ROM Special Edition (1995)(EMAP Images)(GB)[Issue 1995-11].iso
/
Aminet
/
misc
/
emu
/
prlink_amiga.lha
/
prlink-0.8.0a
/
src
/
prsample.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-04-03
|
2KB
|
102 lines
#include <stdlib.h>
#include <stdio.h>
#include "prtrans.h"
#if !defined(__MAIN_C__)
#define main main_prsample
#endif
#ifndef DEFAULT_BUFFER_SIZE
#define DEFAULT_BUFFER_SIZE 65536
#endif
int main (int argc, char **argv);
int main (int argc, char **argv) {
FILE *file;
unsigned long length, buffer_size = DEFAULT_BUFFER_SIZE;
char **parameters = argv;
char *buffer;
baseaddr = portaddr[DEFAULT_PORT];
while (*++parameters && **parameters == '-') { /* check for options */
if (parameters[0][1] == '-') { /* "--" ends options */
parameters++;
break;
}
switch (parameters[0][1]) {
case 'p':
baseaddr = strtoul (*++parameters, NULL, 16);
if (baseaddr > 3) {
fprintf (stderr, "%s: The printer port number must be between 0 and 3.\n",
*argv);
return 1;
}
baseaddr = portaddr[baseaddr];
break;
case 'b':
buffer_size = strtoul (*++parameters, NULL, 10);
break;
case '?':
case 'h':
Usage:
fprintf (stderr, "%s: Plays samples on the remote computer.\n\n", *argv);
fprintf (stderr, "Usage: %s [options] [filename(s)]\n",
*argv);
fprintf (stderr, "Options:\n\t"
"-p port\t"
"Specify the printer port (0 to 3)\nt"
"-b buffersize\t"
"Specify the sample buffer size in bytes.\n");
return 1;
default:
fprintf (stderr, "%s: Illegal option `%s'.\n", *argv, *parameters);
goto Usage;
}
}
if (!(buffer = malloc (buffer_size))) {
fprintf (stderr, "%s: Could not allocate the sample buffer.\n", *argv);
return 3;
}
if (prinit ()) {
fprintf (stderr, "%s: Could not get the I/O permissions.\n", *argv);
return 4;
}
if (!*parameters) { /* no file name specified */
file = stdin;
goto transfer;
}
while (*parameters) {
if (!(file = fopen(*parameters, "rb"))) {
fprintf (stderr, "%s: Could not open the file `%s'.\n", *argv,
*parameters);
return 5;
}
transfer:
while (!feof (file)) {
length = fread (buffer, 1, buffer_size, file);
send (buffer, length);
}
fclose (file);
if (*parameters) parameters++;
}
prclose ();
return 0;
}